AWS ParallelCluster 3.3.0 で追加された Slurm のデータベース接続設定により、従来の接続設定手順に影響があるのか調べました
AWS ParallelCluster 3.3.0 から Slurm のジョブ実行履歴をデータベースへ保存する設定をクラスターのコンフィグ側でサポートされました。従来はユーザー側が任意で Slurm の設定を変更してジョブの実行履歴を保存できるように設定・構築が必要でした。 アップデートに伴いデータベースへ接続する Slurm の設定まわりに v3.3.0 とそれ以前でどういった違いがあるのか調べました。
確認結果
v3.3.0 で設定ファイルに変更、新規追加があったため、v2.7 ~ v3.2.1 までの設定方法を見直す必要がある。
- Slurm の設定ファイル(
/opt/slurm/etc/slurm.conf
)にクラスター名が自動反映- 変更あり
- DB 接続設定ファイル(
/opt/slurm/etc/slurmdbd.conf
)は存在しない- 変更なし
- Slurmdbdデーモン(
/etc/systemd/system/slurmdbd.service
)が作成される- 変更あり
検証環境
項目 | 値 |
---|---|
ParallelCluster | 3.3.0 |
Slurm(sinfo -V) | 22.05.5 |
OS | Ubuntu 20.04 LTS |
CPU | Intel |
HeadNode | t3.micro |
Database | Aurora Serverless v1 MySQL 5.7互換 |
変更箇所の調査
ヘッドノードの Slurm とデータベース(Aurora for MySQL)を接続し、ジョブ実行履歴を保存するための環境構築に必要な設定ファイルは以下になります。
- Slurm の設定ファイル
/opt/slurm/etc/slurm.conf
- Slurm とデータベース接続の設定ファイル
/opt/slurm/etc/slurmdbd.conf
- Slurm とデータベースを接続するための実行ファイル
/opt/slurm/sbin/slurmdbd
- 私は実行ファイルをデーモン化して運用していました
/etc/systemd/system/slurmdbd.service
AWS ParallelCluster 3.2.1 以前のクラスターからデータベースへ接続する手順は以下のブログで紹介しています。
v3.3.0 と v3.2.0 のクラスターのデフォルトの設定ファイルを比較し変更箇所を洗い出します。
MySQL クライアントはインストールされていない
v3.2.0 から変更ありませんでした。MySQL クライアントはインストールされていませんでした。
$ apt list --installed | grep mysql WARNING: apt does not have a stable CLI interface. Use with caution in scripts. libmysqlclient-dev/now 8.0.31-1ubuntu20.04 amd64 [installed,local] libmysqlclient21/now 8.0.31-1ubuntu20.04 amd64 [installed,local] mysql-common/now 8.0.31-1ubuntu20.04 amd64 [installed,local] mysql-community-client-plugins/now 8.0.31-1ubuntu20.04 amd64 [installed,local]
slurm.conf のクラスター名に変更あり
v3.3.0 で変更ありました。ClusterName=hoge
のクラスター名に変更がありました。デフォルトの値がpclster create-cluster -n hoge
でクラスター作成時に指定したクラスター名が入力されるようになっています。
従来は固定値でClusterName=parallelcluster
となっていました。同じデータベースに対して複数のクラスター(ヘッドノード)から接続するときにClusterName=hoge
の名前変更が必要だったのですが、クラスター作成時に指定した名前が自動的に反映されるようになって改善されています。
diffで確認したところ差分はClusterName=hoge
の一箇所のみでしたが参考までにコンフィグ全文記載します。
# # Example slurm.conf file. Please run configurator.html # (in doc/html) to build a configuration file customized # for your environment. # # # slurm.conf file generated by configurator.html. # # See the slurm.conf man page for more information. # # CLUSTER SETTINGS ClusterName=DBTestCluster1 SlurmUser=slurm SlurmctldPort=6820-6829 SlurmdPort=6818 AuthType=auth/munge StateSaveLocation=/var/spool/slurm.state SlurmdSpoolDir=/var/spool/slurmd SwitchType=switch/none SlurmctldPidFile=/var/run/slurmctld.pid SlurmdPidFile=/var/run/slurmd.pid ReconfigFlags=KeepPartState # # CLOUD CONFIGS OPTIONS SlurmctldParameters=idle_on_node_suspend,power_save_min_interval=30,cloud_dns,node_reg_mem_percent=75 CommunicationParameters=NoAddrCache SuspendProgram=/opt/parallelcluster/scripts/slurm/slurm_suspend ResumeProgram=/opt/parallelcluster/scripts/slurm/slurm_resume ResumeFailProgram=/opt/parallelcluster/scripts/slurm/slurm_suspend RebootProgram=/sbin/reboot SuspendTimeout=120 PrivateData=cloud ResumeRate=0 SuspendRate=0 # # TIMERS SlurmctldTimeout=300 SlurmdTimeout=180 UnkillableStepTimeout=180 InactiveLimit=0 MinJobAge=300 KillWait=30 Waittime=0 MessageTimeout=60 AuthInfo=cred_expire=70 # # SCHEDULING, JOB, AND NODE SETTINGS EnforcePartLimits=ALL SchedulerType=sched/backfill ProctrackType=proctrack/cgroup MpiDefault=none ReturnToService=1 TaskPlugin=task/affinity,task/cgroup # # TRES AND GPU CONFIG OPTIONS GresTypes=gpu SelectType=select/cons_tres # # LOGGING SlurmctldDebug=info SlurmctldLogFile=/var/log/slurmctld.log SlurmdDebug=info SlurmdLogFile=/var/log/slurmd.log JobCompType=jobcomp/none # # WARNING!!! The slurm_parallelcluster.conf file included below can be updated by the pcluster process. # Please do not edit it. include slurm_parallelcluster.conf
slurmdbd.conf は存在しない
v3.2.0 から変更ありませんでした。データベースへの接続情報(ユーザー名、パスワード、エンドポイント名)を記載するコンフィグファイルはデフォルトでは用意されていません。
その代わりにクラスター作成のコンフィグにデータベースへの接続情報を記載するとおそらくslurm_parallelcluster_slurmdbd.conf
に反映されるものかと思われます。
# slurm_parallelcluster_slurmdbd.conf is managed by the pcluster processes. # Do not modify. # Please add user-specific slurmdbd configuration options in slurmdbd.conf
コメントからユーザー任意の設定は従来どおりslurmdbd.conf
を作成しておけば良いようです。
slurmdbd.services が既存する
v3.3.0 で変更ありました。Slurmdbd
デーモンがデフォルトで作成されるようになっています。
私も/opt/slurm/sbin/slurmdbd
を都度実行は手間なのでデーモン化していました。記述内容はより Slurm のことを考慮された設定になっているようですので AWS ParallelCluster 謹製のデーモンを採用したいです。
[Unit] Description=Slurm DBD accounting daemon After=network-online.target munge.service mysql.service mysqld.service mariadb.service Wants=network-online.target ConditionPathExists=/opt/slurm/etc/slurmdbd.conf [Service] Type=simple EnvironmentFile=-/etc/sysconfig/slurmdbd ExecStart=/opt/slurm/sbin/slurmdbd -D -s $SLURMDBD_OPTIONS ExecReload=/bin/kill -HUP $MAINPID LimitNOFILE=65536 [Install] WantedBy=multi-user.target
サービスは停止状態でした。slurmdbd.conf
に相当する設定がないため当然ですかね。
$ sudo systemctl status slurmdbd ● slurmdbd.service - Slurm DBD accounting daemon Loaded: loaded (/etc/systemd/system/slurmdbd.service; disabled; vendor preset: enabled) Active: inactive (dead)
サービスの自動起動設定は無効になっていました。slurm.conf
,slurmdbd.conf
に必要な設定をした後は自動起動を有効化したいところです。
$ systemctl is-enabled slurmdbd disabled
まとめ
Slurm の設定ファイル(/opt/slurm/etc/slurm.conf
)にクラスター名が自動反映されるようになり、ユーザー側でクラスター名の書き換えが不要になり手間が改善されました。
DB 接続設定ファイル(/opt/slurm/etc/slurmdbd.conf
)は引き続き存在しなく、ParallelCluster 非管理の設定を記述したい場合は従来どおりslurmdb.conf
を作成すればよいです。
Slurmdbdデーモン(/etc/systemd/system/slurmdbd.service
)が作成済みのため流用しましょう。また、サービス自動起動が無効のため、必要な設定を入れたあとは自動起動を有効化しておいた方が使いやすいでしょう。
おわりに
ParallelCluster 3.2.0 以前で設定していた手法をそのまま 3.3.0 に適用できるのかの調査でした。多少変更が見られたため従来の設定手順を見直すことになりました。3.3.0 対応の設定手順も検証しましたので手順を整理してから別途記事にしてご紹介します。
また、ユーザー側で Slurm とデータベース接続の設定せずにクラスターのコンフィグに設定・管理を任せた方が運用しやすいかもしれなく別途検証次第、こちらも紹介できればと思います。